﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="ChannelTransformationsSchema" targetNamespace="http://schemas.microsoft.com/dsltools/ChannelTransformations" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/ChannelTransformations" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- NamedElement -->
  <xsd:element name="namedElement" abstract="true" type="NamedElement" />
  <xsd:complexType name="NamedElement" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>Overall base class that provides every element with a Name property which acts as its MonikerKey for serialization.</xsd:documentation>
    </xsd:annotation>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <!-- NamedElement Moniker -->
  <xsd:element name="namedElementMoniker" abstract="true" type="NamedElementMoniker" />
  <xsd:complexType name="NamedElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for NamedElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- TransformationRoot -->
  <xsd:element name="transformationRoot" type="TransformationRoot" substitutionGroup="namedElement" />
  <xsd:complexType name="TransformationRoot">
    <xsd:annotation>
      <xsd:documentation>Root element in which others are embedded.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: TransformationRootHasChannel -->
          <xsd:element name="channel" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of TransformationRootHasChannel</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="1" maxOccurs="1" >
                  <xsd:element ref="transformationRootHasChannel">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from TransformationRootHasChannel needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="channel" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: TransformationRootHasGtreeSchema -->
          <xsd:element name="gtreeSchema" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of TransformationRootHasGtreeSchema</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="1" >
                  <xsd:element ref="transformationRootHasGtreeSchema">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from TransformationRootHasGtreeSchema needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="gtreeSchema" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- dslVersion -->
        <xsd:attribute name="dslVersion" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TransformationRoot Moniker -->
  <xsd:element name="transformationRootMoniker" type="TransformationRootMoniker" substitutionGroup="namedElementMoniker" />
  <xsd:complexType name="TransformationRootMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TransformationRoot instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Operators -->
  <xsd:element name="operators" abstract="true" type="Operators" substitutionGroup="namedElement" />
  <xsd:complexType name="Operators" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>Elements that can be connected by Flow links.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: Flow -->
          <xsd:element name="flowTo" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of Flow</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="1" maxOccurs="unbounded" >
                  <xsd:element ref="flow">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from Flow needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="operatorsMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Operators Moniker -->
  <xsd:element name="operatorsMoniker" abstract="true" type="OperatorsMoniker" substitutionGroup="namedElementMoniker" />
  <xsd:complexType name="OperatorsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Operators instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- VSplit -->
  <xsd:element name="vSplit" type="VSplit" substitutionGroup="operators" />
  <xsd:complexType name="VSplit">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
        <!-- Property: table -->
        <xsd:attribute name="table" type="xsd:string" />
        <!-- Property: newTable -->
        <xsd:attribute name="newTable" type="xsd:string" />
        <!-- Property: columnsToSplit -->
        <xsd:attribute name="columnsToSplit" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- VSplit Moniker -->
  <xsd:element name="vSplitMoniker" type="VSplitMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="VSplitMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for VSplit instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StartPoint -->
  <xsd:element name="startPoint" type="StartPoint" substitutionGroup="operators" />
  <xsd:complexType name="StartPoint">
    <xsd:annotation>
      <xsd:documentation>Marks the start of the channel</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Operators">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StartPoint Moniker -->
  <xsd:element name="startPointMoniker" type="StartPointMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="StartPointMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StartPoint instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- EndPoint -->
  <xsd:element name="endPoint" type="EndPoint" substitutionGroup="operators" />
  <xsd:complexType name="EndPoint">
    <xsd:annotation>
      <xsd:documentation>Marks the end of the channel Point</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Operators">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- EndPoint Moniker -->
  <xsd:element name="endPointMoniker" type="EndPointMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="EndPointMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for EndPoint instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Channel -->
  <xsd:element name="channel" type="Channel" substitutionGroup="namedElement" />
  <xsd:complexType name="Channel">
    <xsd:annotation>
      <xsd:documentation>Represented by a swimlane on the diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: ChannelHasOperator -->
          <xsd:element name="operator" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ChannelHasOperator</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="channelHasOperator">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from ChannelHasOperator needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="operators" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: GtreeClassName -->
        <xsd:attribute name="gtreeClassName" type="xsd:string" />
        <!-- Property: GtreePath -->
        <xsd:attribute name="gtreePath" type="xsd:string" />
        <!-- Property: OperatorPath -->
        <xsd:attribute name="operatorPath" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Channel Moniker -->
  <xsd:element name="channelMoniker" type="ChannelMoniker" substitutionGroup="namedElementMoniker" />
  <xsd:complexType name="ChannelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Channel instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- HMerge -->
  <xsd:element name="hMerge" type="HMerge" substitutionGroup="operators" />
  <xsd:complexType name="HMerge">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
        <!-- Property: inName -->
        <xsd:attribute name="inName" type="xsd:string" />
        <!-- Property: tablesToMerge -->
        <xsd:attribute name="tablesToMerge" type="xsd:string" />
        <!-- Property: newColumn -->
        <xsd:attribute name="newColumn" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- HMerge Moniker -->
  <xsd:element name="hMergeMoniker" type="HMergeMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="HMergeMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for HMerge instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Audit -->
  <xsd:element name="audit" type="Audit" substitutionGroup="operators" />
  <xsd:complexType name="Audit">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: TablesToAudit -->
        <xsd:attribute name="tablesToAudit" type="xsd:string" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Audit Moniker -->
  <xsd:element name="auditMoniker" type="AuditMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="AuditMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Audit instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Apply -->
  <xsd:element name="apply" type="Apply" substitutionGroup="operators" />
  <xsd:complexType name="Apply">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ApplyFunction -->
        <xsd:attribute name="applyFunction" type="Function" />
        <!-- Property: FunctionArgs -->
        <xsd:attribute name="functionArgs" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Supply the arguments with comma separated. The order must match.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: table -->
        <xsd:attribute name="table" type="xsd:string" />
        <!-- Property: inNames -->
        <xsd:attribute name="inNames" type="xsd:string" />
        <!-- Property: outNames -->
        <xsd:attribute name="outNames" type="xsd:string" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Apply Moniker -->
  <xsd:element name="applyMoniker" type="ApplyMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="ApplyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Apply instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- HSplit -->
  <xsd:element name="hSplit" type="HSplit" substitutionGroup="operators" />
  <xsd:complexType name="HSplit">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- HSplit Moniker -->
  <xsd:element name="hSplitMoniker" type="HSplitMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="HSplitMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for HSplit instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- VMerge -->
  <xsd:element name="vMerge" type="VMerge" substitutionGroup="operators" />
  <xsd:complexType name="VMerge">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: LeftTable -->
        <xsd:attribute name="leftTable" type="xsd:string" />
        <!-- Property: RightTable -->
        <xsd:attribute name="rightTable" type="xsd:string" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- VMerge Moniker -->
  <xsd:element name="vMergeMoniker" type="VMergeMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="VMergeMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for VMerge instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Adorn -->
  <xsd:element name="adorn" type="Adorn" substitutionGroup="operators" />
  <xsd:complexType name="Adorn">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: tablesToAdorn -->
        <xsd:attribute name="tablesToAdorn" type="xsd:string" />
        <!-- Property: newColumn -->
        <xsd:attribute name="newColumn" type="xsd:string" />
        <!-- Property: Adorner -->
        <xsd:attribute name="adorner" type="Function" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Adorn Moniker -->
  <xsd:element name="adornMoniker" type="AdornMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="AdornMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Adorn instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Pivot -->
  <xsd:element name="pivot" type="Pivot" substitutionGroup="operators" />
  <xsd:complexType name="Pivot">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: tables -->
        <xsd:attribute name="tables" type="xsd:string" />
        <!-- Property: attrColumns -->
        <xsd:attribute name="attrColumns" type="xsd:string" />
        <!-- Property: valColumns -->
        <xsd:attribute name="valColumns" type="xsd:string" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Pivot Moniker -->
  <xsd:element name="pivotMoniker" type="PivotMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="PivotMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Pivot instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- RenameColumn -->
  <xsd:element name="renameColumn" type="RenameColumn" substitutionGroup="operators" />
  <xsd:complexType name="RenameColumn">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
        <!-- Property: TableCurrentColmunNewColumn -->
        <xsd:attribute name="tableCurrentColmunNewColumn" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- RenameColumn Moniker -->
  <xsd:element name="renameColumnMoniker" type="RenameColumnMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="RenameColumnMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for RenameColumn instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Unpivot -->
  <xsd:element name="unpivot" type="Unpivot" substitutionGroup="operators" />
  <xsd:complexType name="Unpivot">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: UnpivotTables -->
        <xsd:attribute name="unpivotTables" type="xsd:string" />
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Unpivot Moniker -->
  <xsd:element name="unpivotMoniker" type="UnpivotMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="UnpivotMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Unpivot instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- GtreeSchema -->
  <xsd:element name="gtreeSchema" type="GtreeSchema" substitutionGroup="namedElement" />
  <xsd:complexType name="GtreeSchema">
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: GtreeSchemaHasShemaTables -->
          <xsd:element name="schemaTable" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of GtreeSchemaHasShemaTables</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="gtreeSchemaHasShemaTables">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from GtreeSchemaHasShemaTables needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="schemaTables" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- GtreeSchema Moniker -->
  <xsd:element name="gtreeSchemaMoniker" type="GtreeSchemaMoniker" substitutionGroup="namedElementMoniker" />
  <xsd:complexType name="GtreeSchemaMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for GtreeSchema instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- SchemaTables -->
  <xsd:element name="schemaTables" type="SchemaTables" substitutionGroup="namedElement" />
  <xsd:complexType name="SchemaTables">
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: DomainRelationship1 -->
          <xsd:element name="targetSchemaTable" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of DomainRelationship1</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="domainRelationship1">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from DomainRelationship1 needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="schemaTablesMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- SchemaTables Moniker -->
  <xsd:element name="schemaTablesMoniker" type="SchemaTablesMoniker" substitutionGroup="namedElementMoniker" />
  <xsd:complexType name="SchemaTablesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for SchemaTables instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TableToDisplay -->
  <xsd:element name="tableToDisplay" type="TableToDisplay" substitutionGroup="schemaTables" />
  <xsd:complexType name="TableToDisplay">
    <xsd:complexContent>
      <xsd:extension base="SchemaTables">
        <!-- Property: Columns -->
        <xsd:attribute name="columns" type="xsd:string" />
        <!-- Property: TableDisplayName -->
        <xsd:attribute name="tableDisplayName" type="xsd:string" />
        <!-- Property: primaryColumns -->
        <xsd:attribute name="primaryColumns" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TableToDisplay Moniker -->
  <xsd:element name="tableToDisplayMoniker" type="TableToDisplayMoniker" substitutionGroup="schemaTablesMoniker" />
  <xsd:complexType name="TableToDisplayMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TableToDisplay instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SchemaTablesMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- RenameTable -->
  <xsd:element name="renameTable" type="RenameTable" substitutionGroup="operators" />
  <xsd:complexType name="RenameTable">
    <xsd:complexContent>
      <xsd:extension base="Operators">
        <!-- Property: ShowConfigIcon -->
        <xsd:attribute name="showConfigIcon" type="xsd:string" />
        <!-- Property: CurrentTableNewTable -->
        <xsd:attribute name="currentTableNewTable" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- RenameTable Moniker -->
  <xsd:element name="renameTableMoniker" type="RenameTableMoniker" substitutionGroup="operatorsMoniker" />
  <xsd:complexType name="RenameTableMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for RenameTable instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="OperatorsMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Flow -->
  <xsd:element name="flow" abstract="true" type="Flow" />
  <xsd:complexType name="Flow" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Operators -->
      <xsd:element ref="operatorsMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- Flow Moniker -->
  <xsd:element name="flowMoniker" abstract="true" type="FlowMoniker" />
  <xsd:complexType name="FlowMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Flow instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- TransformationRootHasChannel -->
  <xsd:element name="transformationRootHasChannel" abstract="true" type="TransformationRootHasChannel" />
  <xsd:complexType name="TransformationRootHasChannel" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>The set of actors (represented by swimlanes) in the task flow.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Channel -->
      <xsd:element ref="channel" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- TransformationRootHasChannel Moniker -->
  <xsd:element name="transformationRootHasChannelMoniker" abstract="true" type="TransformationRootHasChannelMoniker" />
  <xsd:complexType name="TransformationRootHasChannelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TransformationRootHasChannel instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- ChannelHasOperator -->
  <xsd:element name="channelHasOperator" abstract="true" type="ChannelHasOperator" />
  <xsd:complexType name="ChannelHasOperator" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Operators -->
      <xsd:element ref="operators" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ChannelHasOperator Moniker -->
  <xsd:element name="channelHasOperatorMoniker" abstract="true" type="ChannelHasOperatorMoniker" />
  <xsd:complexType name="ChannelHasOperatorMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ChannelHasOperator instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- TransformationRootHasGtreeSchema -->
  <xsd:element name="transformationRootHasGtreeSchema" abstract="true" type="TransformationRootHasGtreeSchema" />
  <xsd:complexType name="TransformationRootHasGtreeSchema" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end GtreeSchema -->
      <xsd:element ref="gtreeSchema" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- TransformationRootHasGtreeSchema Moniker -->
  <xsd:element name="transformationRootHasGtreeSchemaMoniker" abstract="true" type="TransformationRootHasGtreeSchemaMoniker" />
  <xsd:complexType name="TransformationRootHasGtreeSchemaMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TransformationRootHasGtreeSchema instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- GtreeSchemaHasShemaTables -->
  <xsd:element name="gtreeSchemaHasShemaTables" abstract="true" type="GtreeSchemaHasShemaTables" />
  <xsd:complexType name="GtreeSchemaHasShemaTables" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end SchemaTables -->
      <xsd:element ref="schemaTables" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- GtreeSchemaHasShemaTables Moniker -->
  <xsd:element name="gtreeSchemaHasShemaTablesMoniker" abstract="true" type="GtreeSchemaHasShemaTablesMoniker" />
  <xsd:complexType name="GtreeSchemaHasShemaTablesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for GtreeSchemaHasShemaTables instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- DomainRelationship1 -->
  <xsd:element name="domainRelationship1" abstract="true" type="DomainRelationship1" />
  <xsd:complexType name="DomainRelationship1" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end SchemaTables -->
      <xsd:element ref="schemaTablesMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- DomainRelationship1 Moniker -->
  <xsd:element name="domainRelationship1Moniker" abstract="true" type="DomainRelationship1Moniker" />
  <xsd:complexType name="DomainRelationship1Moniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DomainRelationship1 instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Enum TaskSort -->
  <xsd:simpleType name="TaskSort">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Regular"/>
      <xsd:enumeration value="SuperTask"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum Function -->
  <xsd:simpleType name="Function">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BitMask"/>
      <xsd:enumeration value="CurrentTime"/>
      <xsd:enumeration value="CurrentMachine"/>
      <xsd:enumeration value="CurrentUser"/>
      <xsd:enumeration value="ReverseBitMask"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

